/*发起组织*/

import { useForm } from "../../../framework/common/context/metadata-context";
import { Tooltip, Button ,Input,Form, Col, Row, Select, Checkbox} from 'antd';
import axios from "axios";
import { useEffect, useRef, useState } from "react";
import getUserOrgs from "./getUserOrgs.js";//获取组织信息
import request from "../../../framework/common/utils/request";
import eventBus , { useSubscribe }from "../../../framework/common/eventBus";

const { TextArea } = Input;
const { Option } = Select;

//审批同意表单
export default function({
    approveType,
    onChange,
    updateTplData,//调用表单更新updata的方法
    value = "",
    form
}){
    const metadataManager = useForm().root
    const { data: tplData, urlPrefix, params, getErrors, csrfToken} = metadataManager;

    const [orgOptionList, setOrgOptionList] = useState(tplData.__departData__ || []);//发起组织数据列表


    function updataTplDataAndCommon(data){
        updateTplData?.(data);//更新tplData
        eventBus.publish("approveFormCommonData.update",data);//把当前字段的值，更新到公共缓存内
    }

    //发起组织change
    function orgIdChange(option){//为什么没有利用form的change事件触发，是因为form的change事件，无法拿到option.children属性，只能拿到option.value
        if(!option){
            option = {
                value: "",
                children: ""
            }
        }//清空值时，没有option属性，给一个空的默认值
        updataTplDataAndCommon({
            initiater_org_id: option.value,
            initiater_org_name: option.children
        })

        if(option.value){
            //组织切换时，更改监控人
            request({
                url: '/flowinstance/process/check-monitor',
                data:{
                    flow_id: params.flow_id,
                    flow_templeta_id: params.flow_template_id,
                    org_id: option.value,
                    monitor: tplData.ProcessInfo.Monitors
                },
                method: 'POST'
            }).then(function(result){
                if(result.code == 1){
                    if(result.data){
                        tplData.ProcessInfo.newMonitors = result.data;//更新监控人
                        eventBus.publish("monitor.update");//更新监控人
                    }
                }
            });
        }else{
            tplData.ProcessInfo.newMonitors = [];//更新监控人
            eventBus.publish("monitor.update");//更新监控人
        }

        eventBus.publish("refreshTitle.update");//更新标题//refreshTitle();
        
        if (tplData.ApproveDepartRole.ReLoadCcData && tplData.ApproveDepartRole.ReLoadCcData == 1) {
            var DepartRole = option.value;
            if (!DepartRole) {
                return;
            }

            if (tplData.form.FormMode == 1) {//发送消息 老表单需要发送消息
                //todo 兼容老表单
                // var component = getFormComponent();
                // component.sendMessageForGetFormData({
                //     isDraft: false,
                //     sendType: 2,
                //     isApproveBtn: false
                // });
            }
        }
    }

    //监听更新发起组织列表
    useSubscribe("orgOptionList.update", (list)=>{
        setOrgOptionList(list);
    })

    useEffect(function(){
        //获取发起组织信息
        if(!tplData.__departData__){
            getUserOrgs({
                tplData: tplData, 
                params: params, 
                csrfToken: csrfToken
            }).then(function(data){
                if(data && data.code == 1 && data.data){
                    if(data.data.departData && data.data.departData.length){

                        tplData.__departData__ = data.data.departData;//缓存住获得的审批组织信息

                        setOrgOptionList(data.data.departData);//设置发起组织备选项

                        data.data.departData.find(function(item){
                            if(item.is_selected == 1){
                                form.setFieldsValue({
                                    initiater_org_id: item.org_id,
                                    initiater_org_name: item.name_path
                                });//更新表单的值
                                updataTplDataAndCommon({
                                    initiater_org_id: item.org_id,
                                    initiater_org_name: item.name_path
                                });
                                return true;
                            }
                        })
    
                        tplData.step_cc_list_default = data.data.step_cc_list;//审批中，流程步骤配置的默认抄送人不显示在界面上，但是审批需要提供给后端
                        eventBus.publish("refreshTitle.update");//更新标题//refreshTitle();
                    }
                }
            });
        }

    }, []);

    return <Select 
        placeholder="请输入组织"
        allowClear
        showSearch
        optionFilterProp="children"
        value={value}
        onChange={(value, option)=>{
            onChange(value, option);
            orgIdChange(option);//触发更新事件
        }}
        filterOption={(input, option) => option.children.toLowerCase().includes(input.toLowerCase())}>
            {
                orgOptionList.map(function(item){
                    return <Option key={item.org_id} value={item.org_id}>{item.name_path}</Option>
                })
            }
    </Select>
}